package com.wg.game;

import com.wg.game.app.BaseGameApplication;

/**
 * 游戏应用停服钩子线程（JVM关闭时触发执行）
 * <p>
 * 职责：
 * - 在JVM关闭时触发游戏应用的停服逻辑（释放资源、保存状态等）
 * - 确保停服过程的原子性和异常安全性
 * - 提供清晰的日志记录，便于监控停服状态
 *
 * @author 少爷123
 */
public class ShutdownHook extends Thread {
    private final BaseGameApplication application;

    /**
     * 构造停服钩子线程
     *
     * @param application 待停服的游戏应用实例（不可为null）
     * @throws IllegalArgumentException 若application为null
     */
    public ShutdownHook(BaseGameApplication application) {
        super("GameAppShutdownHook");
        this.application = application;
        if (application == null) {
            throw new IllegalArgumentException("BaseGameApplication实例不能为null");
        }
    }

    /**
     * 线程执行逻辑：触发游戏应用停服
     */
    @Override
    public void run() {
        application.stop();
    }
}